Bug 537591 – Don't hardcode minimum width of menuitems
authorMichael Natterer <mitch@imendio.com>
Wed, 2 Jul 2008 12:05:42 +0000 (12:05 +0000)
committerMichael Natterer <mitch@src.gnome.org>
Wed, 2 Jul 2008 12:05:42 +0000 (12:05 +0000)
2008-07-02  Michael Natterer  <mitch@imendio.com>

Bug 537591 – Don't hardcode minimum width of menuitems

* gtk/gtkmenuitem.c: applied patch from Christian Dywan which
introduces a "width-chars" style property which replaces the
hardcoded minimum width of menuitems with submenu. Patch
extracted from Maemo-GTK+.

svn path=/trunk/; revision=20733

ChangeLog
gtk/gtkmenuitem.c

index cc3feb34e1d069943ef7ac43f99430aa95f9cbb7..a3d1bad0b78cad9c3bf0b45456635398985c8594 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-07-02  Michael Natterer  <mitch@imendio.com>
+
+       Bug 537591 – Don't hardcode minimum width of menuitems
+
+       * gtk/gtkmenuitem.c: applied patch from Christian Dywan which
+       introduces a "width-chars" style property which replaces the
+       hardcoded minimum width of menuitems with submenu. Patch
+       extracted from Maemo-GTK+.
+
 2008-07-02  Michael Natterer  <mitch@imendio.com>
 
        * gtk/gtkfilechooserdefault.c: remove some of the million includes.
index 340bed96767232b56ac90d823257da1427a5bf68..f343f937713bf8b8889d0e69958087e4efdf38d7 100644 (file)
@@ -280,6 +280,20 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass)
                                                                P_("Amount of space used up by arrow, relative to the menu item's font size"),
                                                                0.0, 2.0, 0.8,
                                                                GTK_PARAM_READABLE));
+
+  /**
+   * GtkMenuItem:width-chars:
+   *
+   * The minimum desired width of the menu item in characters.
+   *
+   * Since: 2.14
+   **/
+  gtk_widget_class_install_style_property (widget_class,
+                                           g_param_spec_int ("width-chars",
+                                                             P_("Width in Characters"),
+                                                             P_("The minimum desired width of the menu item in characters"),
+                                                             0, G_MAXINT, 12,
+                                                             GTK_PARAM_READABLE));
 }
 
 static void
@@ -597,19 +611,21 @@ get_minimum_width (GtkWidget *widget)
 {
   PangoContext *context;
   PangoFontMetrics *metrics;
-  gint height;
+  gint width;
+  gint width_chars;
 
   context = gtk_widget_get_pango_context (widget);
   metrics = pango_context_get_metrics (context,
                                       widget->style->font_desc,
                                       pango_context_get_language (context));
 
-  height = pango_font_metrics_get_ascent (metrics) +
-      pango_font_metrics_get_descent (metrics);
-  
+  width = pango_font_metrics_get_approximate_char_width (metrics);
+
   pango_font_metrics_unref (metrics);
 
-  return PANGO_PIXELS (7 * height);
+  gtk_widget_style_get (widget, "width-chars", &width_chars, NULL);
+
+  return PANGO_PIXELS (width_chars * width);
 }
 
 static void